iT邦幫忙

2025 iThome 鐵人賽

0

用 BP 神經網路(Backpropagation Neural Network)認識深度學習的骨架


導言:從生物神經啟發到數學架構

早期研究者觀察「生物神經構造」後,發展出 BP 神經網路Backpropagation Neural Network;用「反向傳遞」調整權重的人工神經網路)。它由輸入層(Input Layer)、隱藏層(Hidden Layer)、輸出層(Output Layer)組成,各自分工,透過學習資料來完成分類或預測。


一、BP 神經網路的基本結構與關鍵概念

1. 三層結構與多層延伸

  • 輸入層(Input Layer):接收特徵的入口,不做運算,只把值傳給下一層。
  • 隱藏層(Hidden Layer):透過激活函數等轉換來「增強可表達性」。
    • 激活函數Activation Function):把加總後的訊號壓到合理範圍並引入非線性;例:Sigmoid/Logistic 把值壓在 0–1。白話:像是「把原始分數換成 0 到 1 的喜好度」。
    • 核函數Kernel Function;課堂口語也稱 Kernel/轉換函數):把原始座標(Input Space)映到特徵空間Feature Space),讓原本「分不開」的資料在新空間變得「較容易用直線分」。
    • 特徵空間Feature Space):變換後的新座標系。白話:把資料搬到「更好分的世界」。
  • 輸出層(Output Layer):做最後的決策。節點數=同時要做的決策數(Decisions)。
    • 一個輸出節點:輸出「是 1 的機率」→ 二元決策。
    • 兩個輸出節點:同時輸出「是 1 的機率」與「是 0 的機率」,再比較大小。白話:同一題,兩顆燈,亮比較亮的那顆。

2. 隱藏層的多寡與過擬合Overfitting

  • 隱藏層越多、每層神經元越多 → 表達力越強,但容易過擬合(把訓練資料「背答案」;新資料就亂判)。
  • 過擬合白話:考古題考滿分,新題目卻不會。
  • 反之太少 → 欠擬合Underfitting):模型太弱,學不會重點。

3. 無隱藏層可解「線性可分」(Linearly Separable

  • 典型例子:OR 問題OR Problem)。
    • 規則:只要 (X_1) 或 (X_2) 有一個是 1 → 輸出 1;只有 (00) 時輸出 0。
    • 在平面上,能畫一條直線把 0 與 1 分開 → 線性可分
    • 結論兩層(無隱藏層)BP 就能解。白話:題目簡單到「一刀切」就可以。

4. 必須加隱藏層才能解的「非線性可分」

  • 例:XOR 問題Exclusive OR;兩個一樣輸出 0、不一樣輸出 1)。
    • 點在平面呈對角分布,沒辦法用一條直線切乾淨 → 非線性可分Non-linearly Separable)。
    • 做法:加入隱藏層,用核函數Input Space 轉到 Feature Space,再用輸出層做線性分割
  • 深度學習Deep Learning):本質是「隱藏層很多的 BP 網路」。白話:一步不夠,就「轉再轉」,直到變得好切。

5. 多輸出=同時多決策(Multi-Output / Multi-Label

  • 若要同時判斷「對五種雜誌各自的興趣機率」→ 輸出層放 5 個節點。
  • 輸入編碼
    • 連續數值(Numeric):可直接輸入或先標準化(Normalization)。
    • 類別變數(Categorical)→ 獨熱編碼One-Hot Encoding):把年齡分成「<30」「30–50」「>50」,用 (100/010/001) 表示。白話:把「類別」換成「多個 0/1 燈」。

二、前向傳遞與反向傳遞:網路如何「算」與「學」

1. 全連接Fully Connected)與前向傳遞Feedforward

  • 相鄰兩層「每個神經元彼此相連」。
  • 前向傳遞:從輸入層 → 隱藏層 → 輸出層,逐層算出機率。白話:資料一路往右流,最後吐出預測。

2. 訓練目標:學到權重Weights)與偏置Bias/Bias Term

  • 外界常說「模型有幾億個參數Parameters)」指的就是所有權重+偏置
  • 沒有這些數值,網路就不能用。白話:腦有連線還不夠,還要每條線的「強弱」設定。

3. 誤差函數Error/Loss Function)與平方誤差Squared Error

  • 以輸出與標準答案的差距定義Loss;常見是「平方後加總再除以 2」。
  • 目標:讓 Loss 越小越好。白話:把「預測與真實」的距離壓到最小。

4. 隨機梯度下降SGD: Stochastic Gradient Descent)與學習率Learning Rate

  • 透過梯度Gradient;一階導數的斜率)決定「權重要加還是減」。
    • 梯度 > 0 → 權重太大,要減。
    • 梯度 < 0 → 權重太小,要加。
  • 學習率:每次調整走「多大一步」。太大→ 震盪卡住;太小→ 很穩但很慢。
  • Epoch:完整掃過一次訓練資料。白話:讀完整本課本算 1 回。

5. 反向傳遞Backpropagation;縮寫 BP

  • 輸出層誤差往回傳到隱藏層,逐層更新權重/偏置
  • 需先定義每個節點的節點誤差(常稱 (\delta) / Delta),再套簡單的更新公式。
  • 局部最佳/全域最佳Local/Global Minimum):初始權重不同,可能收斂到不同谷底。白話:起跑位置會影響你最後停哪個山谷。

三、手算範例:輸入 101,為何一開始只得到 0.474?

1. 範例設定

  • 結構:輸入層(3 節點)→ 隱藏層(2 節點)→ 輸出層(1 節點)。
  • 權重與偏置:一開始隨機給(-1 到 1)。
  • 範例輸入:(x = 1,0,1);期望輸出 (y=1)。

2. 神經元內部兩步驟

  • 加總器Summation/Combination Function):前一層輸出 × 對應權重,再加上偏置(Bias)。白話:朋友評分 × 相信程度,加總,再加上「我自己的直覺分」。
  • 激活函數(以 Sigmoid/Logistic 為例):把加總結果壓到 0–1。
    • 輸入為負 → 輸出 < 0.5;輸入為正 → 輸出 > 0.5。
    • 永不達到 0 或 1,只會「很接近」。

3. 前向計算結果

依給定權重/偏置逐步代入後,輸出層得到 0.474(接近 0.5 但明顯低於期望的 1)。
原因:初始權重/偏置是隨機的,還沒學習。

4. 反向傳遞修正

  • 先算輸出節點的 (\delta)(節點誤差),再往回算隱藏節點的 (\delta)。
  • 依公式更新每條權重(Weight Update)與偏置(Bias Update),步幅由學習率控制。
  • 多次重複(數百個 Epoch),輸出便會逐漸逼近 0.9X。白話:一次看不懂,複習 500 回就懂了。

四、手寫數字辨識(MNIST 思維):為何神經網路特別管用?

1. 問題設定

  • 影像切成 (28 \times 28) 的像素 → 784 維輸入
  • 輸出層 10 節點:代表 0–9 的機率。
  • 決策樹等方法只看單一像素很吃力,缺乏「整體形狀」概念;神經網路可透過隱藏層「組合局部成整體」。

2. 隱藏神經元個數與效能

  • 太少 → 欠擬合;逐步增加 → 準確率上升;太多 → 過擬合,準確率反而下降。
  • 實作觀察:隱藏層 ~15 個節點即可達近 90% 準確(課堂示例)。

五、互動工具示範與資料幾何直覺

1. 線性可分資料

  • 邏輯斯迴歸Logistic Regression;等價於「無隱藏層+Sigmoid」的兩層 BP)即可快速分開。

2. 同心圓資料(核心藍、外圈橘)

  • 單純 Logistic 無法解(因為只能畫一條「線」)。
  • 隱藏層或使用可模擬多項式核Polynomial Kernel)效果的激活函數(如 tanh)→ 分得開。
  • 白話:先「彎空間」再「畫直線」。

3. 斜對角棋盤式資料

  • 單純兩層難;加一層隱藏層與足夠節點後可行。
  • 特徵工程Feature Engineering):加入 (x_1 \times x_2) 這種衍生特徵,甚至可讓邏輯斯迴歸也分得漂亮。
  • 白話:先幫模型「造對的尺」,就不用把模型做得超複雜。

4. 高度交疊資料

  • 只靠原始 (x_1,x_2) 再怎麼堆隱藏層也很辛苦。
  • 同時增加層數、節點數,再人工加入核式特徵(平方、乘積、正弦等),學習效果明顯改善。
  • 初始權重(Initial Weights)也會影響收斂與最後解(Local vs Global Minimum)。

六、BP 與傳統統計模型的對照關係(重要!)

  • 兩層、無隱藏層、輸出節點=1、線性激活(Identity)
    線性迴歸Linear Regression)。
  • 兩層、無隱藏層、輸出節點=1、Sigmoid 激活
    二元邏輯斯迴歸Binary Logistic Regression)。
  • 兩層、無隱藏層、輸出節點>1、Softmax/Sigmoid
    多元邏輯斯迴歸Multinomial Logistic Regression)。
  • 有隱藏層的 BP
    複雜的非線性函數逼近器Universal Approximator 的一種實作精神)。
    白話:BP 是一個「超集合」;把隱藏層拿掉,就退化成熟悉的回歸模型。

七、實務提醒與學習心法

1. 先懂原理,再用工具

  • 只仰賴產生程式與自動除錯,遇到錯誤仍需基本功判斷。
  • 白話:車很好開,但你得先會駕駛。

2. 特徵工程與模型複雜度的取捨

  • 有效特徵(如 (x_1x_2))常勝過盲目加深模型。
  • 白話:先把資料整理好,模型就不必「為難」自己。

3. 控制過擬合

  • 正則化Regularization)、丟棄法Dropout:訓練時隨機關掉部份神經元,降低共謀)、早停Early Stopping)等。
  • 白話:別把訓練集當聖經,多看看驗證集的臉色。

八、逐段關鍵知識點對照(含白話)

  • 線性可分Linearly Separable):一條直線能把兩類分開。白話:畫一道牆就能左右隔離。
  • 非線性可分Non-linearly Separable):無法用單一直線分開。白話:牆再怎麼擺都會有漏網。
  • 激活函數Activation Function):Sigmoid/Logistic、tanh、ReLU… 白話:把分數轉成「開關」或「強弱」的按鈕。
  • 核函數/座標轉換Kernel / Feature Mapping):把資料送到高維讓它變好切。白話:繞到二樓看,原來可分。
  • 損失/誤差函數Loss/Error Function):衡量預測離答案多遠。白話:考試對答案、計算扣分。
  • 梯度下降Gradient Descent):順著斜坡往下走找低谷。白話:摸黑下山,手感告訴你往哪走。
  • 學習率Learning Rate):每步走多大。白話:步子太大會滑倒,太小會走到睡著。
  • Epoch:看完所有訓練資料一次。白話:整本書讀一遍。
  • 過擬合Overfitting):背答案。欠擬合Underfitting):沒讀懂。
  • 局部/全域最佳Local/Global Minimum):落在小谷或最大谷。白話:可能迷路在山坳裡。

九、結語:深度學習的直覺與紀律

BP 神經網路的靈魂在於:用隱藏層把不可分變可分、用反向傳遞系統化地修正權重與偏置、持續降低損失直到模型既不「背答案」、又能泛化。當問題更複雜時,加深隱藏層、加強特徵工程、善用正則化與良好初始化,才能兼顧表達力與穩定性。白話:把空間彎對了、參數調對了,模型就會「看懂」資料。


附:課堂範例與口語對應小抄

  • OR 問題(OR Problem)→ 無隱藏層可解。
  • XOR 問題(Exclusive OR)→ 必須加隱藏層。
  • 手寫數字(MNIST 思維)→ 784 入、10 出,適度隱藏節點 ≈ 90% 準確。
  • 工具演示(Java 模擬器)→ 看見權重更新與誤差曲線,建立幾何直覺。
  • 特徵工程(Feature Engineering)→ (x_1x_2) 一招,常勝於盲目加深。
  • 正則化(Regularization / Dropout / Early Stopping)→ 克制過擬合的三件套。

一句話總結:BP 神經網路(Backpropagation)是把「不可分的世界」用「隱藏層的座標魔法」變成「可分的世界」,再用線性刀法完成最後一劍;訓練時靠梯度慢慢把刀磨利,直到既鋒利又不傷人。


上一篇
Bollinger La Grande Année Rosé 2012|優雅與時間的詩篇
下一篇
數據、智慧與人文共築的醫療新紀元
系列文
AI 與統計在醫療與長照的應用:連結教育、收入、婚姻與居住,建構健康與照護決策支持47
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言